/*************************************************************************************
*Copyright (c) 2011, Intel Mobile Communications GmbH. 
*All rights reserved.
*
*Redistribution and use in source and binary forms, with or without
*modification, are permitted provided that the following conditions are met:
*    * Redistributions of source code must retain the above copyright
*      notice, this list of conditions and the following disclaimer.
*    * Redistributions in binary form must reproduce the above copyright
*      notice, this list of conditions and the following disclaimer in the
*      documentation and/or other materials provided with the distribution.
*    * Neither the name of the <organization> nor the
*      names of its contributors may be used to endorse or promote products
*      derived from this software without specific prior written permission.
*
*THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
*ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*DISCLAIMED. IN NO EVENT SHALL INTEL MOBILE COMMUNICATIONS GMBH. BE LIABLE FOR ANY
*DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
*(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
*LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
*ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*************************************************************************************/



#include "cef_target.h"
using namespace std;
cef_target::cef_target()
{
	name="default";
	id=0;
	flows=NULL;
	
}
cef_target::cef_target(unsigned i,string n, vector<cef_flow*> * f): id(i), name(n)
{
	flows=f;	
}
cef_target::~cef_target()
{
	if(flows)
	{
		for(unsigned i=0;i<flows->size();i++)
		{
			delete (*flows)[i];
		}
		delete flows;
	}
}
void cef_target::setName(string n)
{
	name=n;	
}
void cef_target::setID(unsigned i)
{
	id=i;	
}
void cef_target::setFlows(vector<cef_flow*>* f)
{
	flows=f;	
}
void cef_target::addFlow(cef_flow* f)
{
	if(flows==NULL) flows=new vector<cef_flow*>();
	flows->push_back(f);
}
string cef_target::getName()
{
	return name;
}
unsigned cef_target::getID()
{
	return id;
}
vector<cef_flow*>* cef_target::getFlows()
{
	return flows;
}
cef_flow* cef_target::getFlow(unsigned i)
{
	if(flows) return (*flows)[i];
	return NULL;
}
unsigned cef_target::sizeFlows()
{
	if(flows) return flows->size();
	return 0;
}

#ifdef _DEBUG
void cef_target::print()
{
	cout<<"CEF Target\nBEGIN\n";
	cout<<"Name: "<<name<<" ID: "<<id<<endl;
	if(flows)
	{
		for(unsigned i=0;i<flows->size();i++)
		{
			(*flows)[i]->print();
		}
	}
	cout<<"END\n";
}
#endif
